#include<stdio.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<iostream>
#define LOG "log.txt"
// int main(){
//    // O_CREAT|O_WRONLY: 默认不会对原始文件内容做清空
// //    int fd = open(LOG, O_WRONLY | O_CREAT, 0666);
// //    int fd = open(LOG, O_WRONLY | O_CREAT | O_TRUNC, 0666);//覆盖写
//    int fd = open(LOG, O_WRONLY | O_CREAT | O_APPEND, 0666); //以读写追加的方式打开，权限与上umask
// //    int fd = open(LOG, O_RDONLY); //打开 仅读取
//    if(fd == -1)
//    {
//       printf("fd: %d, errno: %d, errstring: %s\n", fd, errno, strerror(errno));
//    }
//    else printf("fd: %d, errno: %d, errstring: %s\n", fd, errno, strerror(errno));

//    char buffer[1024];
//    // 这里我们无法做到按行读取，我们是整体读取的。
//    ssize_t n = read(fd, buffer, sizeof(buffer)-1); //使用系统接口来进行IO的时候，一定要注意，\0问题
//    if(n > 0)
//    {
//       buffer[n] = '\0';

//       printf("%s\n", buffer);
//    }
// //C语言
//   const char *msg = "bbb";
//   int cnt = 3;

//   while(cnt)
//   {
//       char line[128];
//       //把字符串写入到line缓冲区中
//       snprintf(line, sizeof(line), "%s, %d\n", msg, cnt);

//       write(fd, line, strlen(line)); //这里的strlen不要+1, \0是C语言的规定，不是文件的规定！
//       cnt--;
//   }
  

//   close(fd);

//    return 0;
// }





// int main()
// {
//     //C
//     printf("Hello printf -> stdout\n");
//     fprintf(stdout,"Hello fprintf -> stdout\n");
//     fprintf(stderr,"Hello fprintf -> stderr\n");
    
//     //C++
//     std::cout << "Hello cout -> cout" << std::endl;
//     std::cerr << "Hello cerr -> cerr" << std::endl;
//     return 0;
    
// }





// int main()
// {
//     int fd=open(LOG,O_RDONLY);
//     dup2(fd,0);
//     int a,b;
//     scanf("%d %d",&a,&b);
//     printf("a=%d , b=%d\nfd=%d",a,b,fd);
//     // close(1);
//     // int fd=open(LOG,O_WRONLY);
//     // int a=123,b=456;
//     // printf("a=%d , b=%d\nfd=%d",a,b,fd);
    
//     return 0;
// }



int main()
{
    const char* msg="Hello write\n";
    //C库
    fprintf(stdout,"Hello fprintf\n");
    //系统调用
    write(1,msg,strlen(msg));

    fork();
    return 0;
}